package com.day06;

/**
 * 类中方法的声明和使用:
 * <p>
 * 方法:描述类应该具有的功能。
 * 比如:Math类:sqrt()\random()
 * Scanner类: nextXxx()....
 * Arrays类: sort()
 * <p>
 * 1.举例:
 * <p>
 * public void eat(){}
 * public void sleep(int hour){}
 * public String getName(){}
 * <p>
 * 2.方法的声明: 权限修饰符  返回值类型 方法名(形参列表){
 * 方法体；
 * }
 * <p>
 * <p>
 * <p>
 * 3.说明:
 * 3.1 权限修饰符: 默认方法的权限先都使用public
 * java中规定的4种权限修饰符 private public 缺省 protected
 *
 *
 * 3.2返回值类型:有返回值 vs 没有返回值
 *      3.2.1 如果方法有返回值，则必须在方法声明时，指定返回值的类型。同时，方法中，需要使用
 *          return 关键字来返回指定类型的变量或者常量
 *
 *          如果方法没有返回值，则必须使用void来表示。
 *          使用return,但是，如果使用的话，只能"return"表示结束此方法的意思。
 *
 *     3.2.2  我们定义方法时，该不该有返回值？看经验吧
 *              1.题目要求
 *              2.凭经验
 *
 *     3.3.3 方法名: 属于标识符，遵循标识符的规则和规范，"见名知意"
 *
 *     3.4 形参列表: 方法可以声明0个，1个，多个形参。
 *          3.4.1 格式: 数据类型1 形参1，数据类型2 形参2 ......
 *
 *          3.4.2 我们定义方法时，该不该定义形参?
 *                  我们定义方法时，该不该定义形参
 *
 *     3.5方法体:  方法功能的实现。
 *
 *
 *   4.return关键字的使用。
 *          1.使用范围:使用在方法体中
 *          2.针对于有返回值类型的方法，使用"return 数据"
 *
 *          3.注意点: return 关键字后面不可以声明执行语句.
 *
 *
 *   5.方法使用中，可以调用当前类的属性或方法
 *          特殊的:方法A中又调用了方法A:递归方法
 *
 *          方法中不可以定义方法。
 *
 *   6.匿名函数
 *      6.1理解: 我们创建的对象，没有显式的赋给一个变量名，即为匿名对象。
 *      6.2特征:  匿名对象只能调用一次，第二次再调用就是一个新的对象。
 *
 *
 *        匿名对象可以调用属性,但是没有意义,因为调用后就变成垃圾
 *        如果需要赋值还是用有名字对象
 *
 *
 */

public class CustomerTest {

    public static void main(String[] args) {
        Customer customer = new Customer();
        customer.eat();

        //匿名对象
        new Customer().sleep(12);
    }

}


//客户类
class Customer {

    //属性
    String name;
    int age;
    boolean isMale;

    //方法
    public void eat() {
        System.out.println("客户吃饭");
        //没有返回值可以使用retuen,但是return后不能声明表达式。
        return;
    }

    public void sleep(int hour) {
        System.out.println("休息了" + hour + "小时");
    }

    public String getName() {
        return name;
    }

    public String getNation(String nation) {
        String info = "我的国籍是:" + nation;
        return info;
    }


}
